/**
 * 版权所有(C)，上海***股份有限公司，2018，所有权利保留。
 * 
 * 项目名：	rabbitmq
 * 文件名：	Receiver1.java
 * 模块说明：	
 * 修改历史：
 * 2018年9月28日 - Administrator - 创建。
 */
package com.study.rabbitmq.work;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.QueueingConsumer;
import com.study.rabbitmq.util.ConnectionUtil;
import com.study.rabbitmq.util.QueueUtil;

/**
 * 消费者1
 * 
 * @author Administrator
 *
 */
public class Consumer1 {

  public static void main(String[] argv) throws Exception {
    // 获取到连接以及mq通道
    Connection connection = ConnectionUtil.getConnection();
    Channel channel = connection.createChannel();
    // 声明队列
    channel.queueDeclare(QueueUtil.QUEUE_NAME_WORK, false, false, false, null);
    // 同一时刻服务器只会发一条消息给消费者（上一条消息消费完了，才会消费下一条）
    channel.basicQos(1);
    // 定义队列的消费者
    QueueingConsumer consumer = new QueueingConsumer(channel);
    // 监听队列，手动返回完成
    channel.basicConsume(QueueUtil.QUEUE_NAME_WORK, false, consumer);
    // 获取消息
    while (true) {
      QueueingConsumer.Delivery delivery = consumer.nextDelivery();
      String message = new String(delivery.getBody());
      System.out.println("Consumer1 Received：" + message);
      // 休眠
      Thread.sleep(10);
      // 返回确认状态
      channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
    }
  }
}
